bool BinaryTreeComplete(TreeNode* node)
{
	Queue q;
	QueueInit(&q);
	if (node)
		QueuePush(&q, node);
 
	while (!QueueEmpty(&q))
	{
		TreeNode* front = QueueFront(&q);
		QueuePop(&q);
 
		// 遇到空就跳出去
		if (front == NULL)
			break;
 
		// 未遇到就继续插入左右孩子
		QueuePush(&q, front->left);
		QueuePush(&q, front->right);
	}
 
	// 前面遇到空了，看后面还会不会有非空
	while (!QueueEmpty(&q));
	{
		TreeNode* front = QueueFront(&q);
		QueuePop(&q);
 
		// 有非空，不是完全二叉树
		if (front)
		{
			QueueDestroy(&q);
			return false;
		}
	}
 
	// 没有非空，是完全二叉树
	QueueDestroy(&q);
	return true;
}